Entradas digitales
Al igual que puedes asignar HIGH o LOW a un pin digital de la placa controladora, puedes leer el valor generado por un sensor que esté conectado a ella. Las entradas digitales, al igual que las salidas solo tienen dos estados.
Ejemplo 2.7
Un simple cable es un buen ejemplo para demostrar la teoría básica de las entradas digitales. En este ejemplo, escribirás un programa que encenderá o apagará el LED de la placa en función de la lectura del pin digital al que el cable está conectado.
Materiales
- 1 x placa controladora
- 1 x cable de prototipado
Instrucciones
- Conecta el cable al pin digital 5 de la placa controladora.
- Abre el IDE y escribe el siguiente programa:
- Compila y descarga el programa en la placa.
source: http://verkstad.cc/urler/ctc-g-b2-c-71
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26/* * _2.7_digital_input * * The board will turn the on-board LED on or off * * (c) 2013-2016 Arduino LLC. */ int inputPin = 5; int ledPin = 13; void setup() { pinMode(inputPin, INPUT); pinMode(ledPin, OUTPUT); } void loop() { if (digitalRead(inputPin) == HIGH) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } }
Resultado
Conecta el extremo suelto del cable a la alimentación y luego a GND y repite esto varias veces. ¿Qué ocurre? Cuando conectas el cable a la alimentación, el LED de la placa se enciende. Cuando conectas el cable a GND el LED de la placa se apaga. Como verás, esto no funciona perfectamente.
Comandos
- pinMode(pinNumber, INPUT): Configura el pin digital pinNumber para que se comporte como entrada.
- digitalRead(pinNumber): Lee el valor de voltaje en el pin digital pinNumber, y devuelve si está a HIGH o LOW. Devolverá HIGH cuando el cable esté conectado a la alimentación y LOW cuando se conecte a GND.
Recordemos también lo que vimos durante el primer bloque de contenido:
- if( test ){ statements }: Comprueba si la condición test es verdadera o falsa. Si es verdadera, se ejecuta el código entre llaves (statements). Si es falsa, el programa salta esa parte y ejecuta el código después de las llaves.
- value1 == value2: Compara value1 y value2. Si los valores son iguales, devuelve "1", si son diferentes devuelve "0". Cuando quieres comparar dos valores en un programa, debes utilizar dos veces el signo 'igual a', es decir, ==. Esto hace que el ordenador entienda que los quieres comparar (en lugar de asignar). Este "doble igual" es lo que llamamos un operador. Hay otros operadores que comparan otro tipo de valores.
Cómo funciona
- Se declaran dos variables, ledPin y inputPin. En ledPin se almacena el valor 13, y en inputPin el valor 5.
- En la función setup(), el pin 13 se configura como salida y el pin 5 como entrada.
- En la función loop(), se lee el estado del pin 5, y simultáneamente se comprueba si es igual a HIGH.
- Si el cable está conectado a la alimentación se lee un nivel alto (HIGH), y se enciende el LED escribiendo HIGH en el pin 13.
- Si el cable está conectado a GND se lee un nivel bajo (LOW), y se apaga el LED escribiendo LOW en el pin 13.
- Repite la función loop(), lo que significa que se comprueba estado del pin 5 continuamente.
Botón
Un simple cable puede ser bueno para explicar la teoría de entradas digitales, pero no es la mejor entrada que puedes usar para tus proyectos. Vamos a probar mejor con un botón. Con la placa controladora, puedes leer dos estados diferentes de un botón; HIGH y LOW.
En el siguiente ejemplo usarás el botón de Modulino. Los componentes Modulino te ayudan hacer circuitos fácilmente ya que son pequeños circuitos integrados con los componentes electrónicos necesarios, como por ejemplo, resistencias.
Ejemplo 2.8
Este ejemplo hace lo mismo que el anterior, pero en lugar de emplear un cable vas a emplear un botón de Modulino.
Materiales
- 1 x placa controladora
- 1 x Shield Educativa
- 1 x módulo botón
- 1 x cable de módulo
Instrucciones
- Conecta la shield en la parte superior de tu placa controladora.
- Conecta el botón de Modulino a al conector D6 de la shield usando el cable de Modulino.
- Escribe el siguiente programa en el IDE:
- Compila y descarga el programa en la placa.
source: http://verkstad.cc/urler/ctc-g-b2-c-81
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26/* * _2.8_digital_input * * The board will turn the on-board LED on or off, with a button module * * (c) 2013-2016 Arduino LLC. */ int inputPin = 6; int ledPin = 13; void setup() { pinMode(inputPin, INPUT); pinMode(ledPin, OUTPUT); } void loop() { if (digitalRead(inputPin) == HIGH) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } }
Resultado
El LED se encenderá cuando el botón este pulsado y se apagará cuando el botón no este pulsado.
Cómo funciona
- En este ejemplo, la variable inputPin almacena el valor 6, el número del pin digital al que está conectado el botón.
- En la función setup(), el pin 13 se configura como salida y el pin 6 como entrada.
- En la función loop(), se lee el estado del pin 6, y simultáneamente se comprueba si es igual a HIGH.
- Si el botón esta pulsado, se lee un nivel alto (HIGH), y se enciende el LED.
- Si el botón no esta pulsado, se lee un nivel bajo (LOW), y se apaga el LED.
- Repite la función loop(), lo que significa que se comprueba estado del pin 6 continuamente.
¡Sigue experimentando!
- Escribe un programa que haga sonar un sonido al pulsar el botón.
- Añade un LED que parpadee cuando el botón este pulsado.
Nota: El conector D6 está conectado al pin digital 6 de la placa controladora. Si tienes algo en D6, no podrás usarlo para conectar cualquier otra cosa.